home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Power Programmierung
/
Power-Programmierung (Tewi)(1994).iso
/
magazine
/
ins_msb
/
9011
/
filelock.bas
< prev
next >
Wrap
BASIC Source File
|
1990-11-01
|
2KB
|
87 lines
'*** Program FILELOCK.BAS ***************************************
TYPE InvoiceHdr
InvoiceNbr AS LONG
AcctNbr AS STRING * 6
Terms AS STRING * 20
InvoiceTotal AS CURRENCY
END TYPE
DECLARE SUB ChangeRecord (e AS InvoiceHdr)
DECLARE SUB GetData (e AS InvoiceHdr)
DECLARE SUB AddRecord (e AS InvoiceHdr)
DIM InvoiceHdrRec AS InvoiceHdr
DIM LastRecord, RecNo AS LONG
ON ERROR GOTO ErrorHandler
OPEN "INVHDR.DAT" FOR RANDOM SHARED AS #1 LEN = LEN(InvoiceHdrRec)
DO
CLS
PRINT "(A)dd a record, (C)hange a record, or (Q)uit ";
Choice$ = INPUT$(1)
Choice$ = UCASE$(Choice$)
PRINT Choice$
LastRecord = LOF(1) / LEN(InvoiceHdrRec)
SELECT CASE Choice$
CASE "A"
CALL AddRecord(InvoiceHdrRec)
PUT 1, LastRecord + 1, InvoiceHdrRec
CASE "C"
PRINT "Enter the number of the record to update (1 to";
PRINT LastRecord; ")"
DO
INPUT "Record Number "; RecNo
LOOP UNTIL RecNo > 0 AND RecNo <= LastRecord
TryLock:
LOCK 1, RecNo
GET 1, RecNo, InvoiceHdrRec
CALL ChangeRecord(InvoiceHdrRec)
PUT 1, RecNo, InvoiceHdrRec
UNLOCK 1, RecNo
CASE "Q"
END SELECT
EndLoop:
LOOP UNTIL Choice$ = "Q"
CLOSE #1
ErrorHandler:
SELECT CASE ERR
CASE 70
LOCATE 22, 10: PRINT "Record"; RecNo; "is currently in use"
LOCATE 23, 10: PRINT "Would you like to try again (Y/N)"
Try$ = INPUT$(1)
Try$ = UCASE$(Try$)
LOCATE 22, 10: PRINT SPACE$(60)
LOCATE 22, 10: PRINT SPACE$(60)
IF Try$ = "Y" THEN CLS : RESUME TryLock ELSE RESUME EndLoop
END SELECT
SUB AddRecord (NewRecord AS InvoiceHdr)
CALL GetData(NewRecord)
END SUB
SUB ChangeRecord (ChgRecord AS InvoiceHdr)
PRINT "Old Record"
PRINT USING "Invoice Number: ########## ";_
ChgRecord.InvoiceNbr
PRINT USING "Account Number: \ \";_
ChgRecord.AcctNbr
PRINT USING "Terms: \ \";_
ChgRecord.Terms
PRINT USING "Invoice Total $$,#####.## ";_
ChgRecord.InvoiceTotal
PRINT
PRINT "Enter New Data:"
CALL GetData(ChgRecord)
END SUB
SUB GetData (e AS InvoiceHdr)
INPUT "Invoice Number "; e.InvoiceNbr
INPUT "Account Number "; e.AcctNbr
INPUT "Terms "; e.Terms
INPUT "Invoice Total "; e.InvoiceTotal
END SUB